Virtualization enables a single host machine with hardware and software support for virtualization to present an abstraction of the host, such that the underlying hardware of the host machine appears as one or more independently operating virtual machines. Each virtual machine may therefore function as a self-contained platform. Virtualization technology may be used to allow multiple guest operating systems and/or other guest software to coexist and execute apparently simultaneously and apparently independently on multiple virtual machines while actually physically executing on the same hardware platform. A virtual machine may mimic the hardware of the host machine or alternatively present a different hardware abstraction altogether.
Virtualization systems may include a virtual machine monitor (VMM) which controls access to the host machine. In some embodiments, any other VM control logic may be utilized. The VMM may provide guest software operating in a virtual machine with a set of resources (e.g., processors, memory, IO devices). The VMM may map some or all of the components of a physical host machine into the virtual machine, and may create virtual components, emulated in software within the VMM, which are available to the virtual machine (e.g., virtual IO devices). The VMM may use features of a hardware virtualization architecture to provide services to a virtual machine and to provide protection from and between multiple virtual machines executing on the host machine.
In a virtualized computing environment, a virtual machine may be migrated from one physical platform to another, either through “live migration” or through saving and restoring the state of the VM. In the case that all platform resources presented to the VM are virtual, the VMM may transfer the state of all of these resources. In the case that an interface to a physical graphics device function (e.g., virtual function of a single-root I/O virtualization (SR-IOV) capable device or a dedicated device mapped with the support of an input/output memory management module (IOMMU) has been provided to a VM, the process of migration may be inhibited. In one case, the target platform for migration may have no hardware graphics devices that are available for the guest OS. In another case, the graphics hardware on the target platform may differ from the source. In the case of compatible hardware being available at the target, the VMM may not transfer all of the relevant device state information. With graphics virtualization and VM migration, guest OS may need to support dynamic changes to the hardware-based graphics devices as they become available and are assigned by the virtual machine monitor (VMM) to the VM. Some operating systems may not support dynamic plug-and-play of graphics devices.